#ifndef _WINDOW_H
#define _WINDOW_H

//////////////
/* Hlavicky */
#include "input.h"  //< Vstupni trida
//////////////

/////////////////////////////////////
/* Deklarace globalnich promennych */
extern CInput g_mInput;
/////////////////////////////////////

//////////////////////
/* Definice objektu */

/* Trida okna */
class CWindow
{
public:
#ifdef _WIN32             
  /* Windows */
  HDC mDeviceContext;           //< Kontext kresliciho zarizeni
  HGLRC mOglContext;            //< OpenGL rendering kontext
  HWND mWindow;                 //< Handle okna
  HINSTANCE mInstance;          //< Handle instance okna

  MSG mMsg;                     //< Instance zpravy

#else                           
  /* POSIX */
  Display *mDisplay;            //< X11 Display
  Window mWindow;               //< X11 Okno
  Colormap mColorMap;           //< X11 Barevna mapa
  GLXContext mOglContext;       //< GLX rendering kontext
      
  XEvent mEvent;                //< X11 zprava
#endif

  unsigned int mWidth;          //< Sirka okna
  unsigned int mHeight;         //< Vyska okna
  unsigned char mBitsPerPixel;  //< Pocet bitu na pixel (ovlivni jen Windows, X11 ma pouze RGB8)
  bool mFullscreen;             //< Zda okno spustit ve fullscreen
};
//////////////////////

/////////////////////
/* Definice funkci */

/* Vytvor okno */
void winCreateWindow(CWindow *mWindow);

/* Zpracuj zpravy na okne */
void winProcessMessage(CWindow *mWindow, CInput *mInput, bool *mApplicationState);

/* Uvolni pamet okna a znic jej */
void winReleaseWindow(CWindow *mWindow);
/////////////////////

#endif